package Libs.Utils.GerenciamentoBoletos
{
	import Libs.Componentes.NaoVisuais.ObjetoRemoto;
	import Libs.Dados.Objetos.ContaBanco;
	import Libs.Dados.Objetos.MovimentoFinanceiro;
	import Libs.Dados.Objetos.Pessoa;
	import Libs.Dados.Objetos.Titulo;
	
	import flash.display.DisplayObject;
	
	import mx.effects.Fade;
	import mx.effects.Parallel;
	import mx.effects.WipeDown;
	import mx.managers.PopUpManager;
	import mx.rpc.events.ResultEvent;
	
	public class GeracaoBoleto
	{		
		private var _popUpEffect:Parallel = new Parallel();
		private var _aplicacao:Object = new Object();
		private var _emailSacado:String;
		
		public function GeracaoBoleto()
		{		
			var fade:Fade = new Fade();
			fade.alphaTo = 1;
			fade.alphaFrom = 0;
			
			_popUpEffect.addChild(fade);
			
			var wipeDown:WipeDown = new WipeDown();
			//wipeDown.moveEasingFunction = Bounce.easeOut; 
			wipeDown.duration = 900;
			_popUpEffect.addChild(wipeDown);
		}
		
		public function set Aplicacao(value:Object):void
		{
			_aplicacao = value;
		}
		
		public function GerarBoletoTitulo(titulo:Libs.Dados.Objetos.Titulo, sacado:Libs.Dados.Objetos.Pessoa, contaBanco:Libs.Dados.Objetos.ContaBanco, 
									formaPagamento:Libs.Dados.Objetos.FormaPagamento, usuarioPermissao:Libs.Dados.Objetos.Usuario):void
		{
			if(sacado.ListaEmails != null)
			{
				this._emailSacado = sacado.ListaEmails[0].Descricao;
			}
			var _objetoRemoto:Libs.Componentes.NaoVisuais.ObjetoRemoto = new ObjetoRemoto("Neturion.Servicos.ServicoTitulo", RetornoGerarBoleto);
			_objetoRemoto.getOperation("GeracaoBoleto").send(titulo, sacado, contaBanco, formaPagamento, usuarioPermissao);
		}
		
		public function GerarBoletoMovimentoFinanceiro(movimentoFinanceiro:Libs.Dados.Objetos.MovimentoFinanceiro, sacado:Libs.Dados.Objetos.Pessoa, contaBanco:Libs.Dados.Objetos.ContaBanco, 
									formaPagamento:Libs.Dados.Objetos.FormaPagamento, usuarioPermissao:Libs.Dados.Objetos.Usuario):void
		{
			if(sacado.ListaEmails != null)
			{
				this._emailSacado = sacado.ListaEmails[0].Descricao;
			}
			var _objetoRemoto:Libs.Componentes.NaoVisuais.ObjetoRemoto = new ObjetoRemoto("Neturion.Servicos.ServicoMovimentoFinanceiro", RetornoGerarBoleto);
			_objetoRemoto.getOperation("GeracaoBoleto").send(movimentoFinanceiro, sacado, contaBanco, formaPagamento, usuarioPermissao);
		}
		
		private function RetornoGerarBoleto(evt:ResultEvent):void
		{
			if(evt.result != null)
			{
				//var u:URLRequest = new URLRequest(evt.result.toString());
				//navigateToURL(u, "_blank");
							
				var visualizacaoBoleto:VisualizacaoBoleto = VisualizacaoBoleto(PopUpManager.createPopUp(_aplicacao as flash.display.DisplayObject, VisualizacaoBoleto, true));
				visualizacaoBoleto.Source = evt.result.toString();
				visualizacaoBoleto.EmailSacado = this._emailSacado;
				PopUpManager.centerPopUp(visualizacaoBoleto);
				_popUpEffect.target = visualizacaoBoleto;
				_popUpEffect.play();
			}	
		}		
	}
}